AWS データベースサービスの自動バックアップ設定まとめ
データベースといえば、一般的に避けては通れないのがバックアップ運用です。
AWSで提供されているサービスで「データベースサービス」にカテゴライズされるもののうち、RDS、Redshift、ElastiCache(※Redisのみ)については自動バックアップ(自動スナップショット)の機能が提供されています。この機能を使えば基本的にはバックアップ運用をAWSにお任せできるのですが、バックアップサイクル等の設定についてはサービス毎に差異があります。
運用をAWSにお任せできるとはいえ、その仕様を把握しておかないといざリカバリをしようとした際に意図したリカバリポイントまで復元ができない、などという事態が発生する可能性があります。
ということで、今回は各データベースサービスの自動バックアップの設定について、バックアップサイクル、バックアップ開始時刻、バックアップ保持期間の3つの観点でまとめてみました。
Amazon RDS
項目 | デフォルト値 | 設定可能な値 |
---|---|---|
バックアップサイクル | 1回/日 | 設定変更不可 |
バックアップ開始時刻 | リージョンごとに8時間の時間ブロックからランダムに選択される | 「開始時刻」と「期間(0.5〜3時間)」をUTCで指定 |
バックアップ保持期間 | 7日 | 0日〜35日 |
バックアップサイクル
バックアップサイクルは「1回/日」で固定ですが、RDSでは自動バックアップ(自動スナップショット)に加えて、5分毎にデータベース変更ログのアーカイブが自動で行われます。これにより、ポイントインタイムリカバリが可能となっています。
バックアップ開始時刻
バックアップ開始時間は「開始時刻」と「期間」を指定します。例えば開始時間を「20時00分」、期間を「0.5時間」と指定した場合は、「20時00分〜20時30分」の間にバックアップ処理が開始されます(ピンポイントに何時から開始、という指定はできません。)。指定できる期間は0.5時間〜3時間まで(0.5時間刻み)となっています。
デフォルトのバックアップ開始時刻は、リージョンごとに以下の時間ブロックからランダムに選択されます。
リージョン | 時間ブロック |
---|---|
米国東部(バージニア北部リージョン) | 03:00-11:00 UTC |
米国西部(北カリフォルニア)リージョン | 06:00-14:00 UTC |
米国西部(オレゴンリージョン) | 06:00-14:00 UTC |
欧州(アイルランド)リージョン | 22:00-06:00 UTC |
欧州(フランクフルト)リージョン | 23:00-07:00 UTC |
アジアパシフィック(東京)リージョン | 13:00-21:00 UTC |
アジアパシフィック(シドニー)リージョン | 12:00-20:00 UTC |
アジアパシフィック(シンガポール)リージョン | 14:00-22:00 UTC |
南米 (サンパウロ) リージョン | 00:00-08:00 UTC |
バックアップ保持期間
バックアップ保持期間は最大で35日まで指定可能です。この値を「0日」に設定すると自動バックアップが無効化されます。
DBインスタンスを削除した場合や自動バックアップを無効にした場合には、自動バックアップで作成されたスナップショットも同時に削除されます。DBインスタンスの削除後/自動バックアップの無効化後もスナップショットを残しておきたい場合は、
- 手動でスナップショットを作成しておく
- 自動スナップショットのコピーを作成しておく
のいずれかの対応をDBインスタンスの削除前/自動バックアップの無効化前に実施しておく必要があります。(この点を考慮して、RDSのマネージメントコンソールからDBインスタンスを削除する場合は、「最終スナップショットを作成」がデフォルトで「はい」に設定されています。)
手動スナップショットの最大数はデフォルトでは「50」の制限があります。これ以上の手動スナップショットの作成が必要な場合は予め上限緩和申請をしておきましょう。
Amazon Redshift
項目 | デフォルト値 | 設定可能な値 |
---|---|---|
バックアップサイクル | 不定 | 設定変更不可 |
バックアップ開始時刻 | 不定 | 設定変更不可 |
バックアップ保持期間 | 1日 | 0日〜35日 |
Redshiftではバックアップサイクルと開始時刻を指定できません。またRDSのようなポイントインタイプリカバリの機能は提供されていません。Redshiftの管理者ガイドには、
Amazon Redshiftは定期的にそのクラスターのスナップショットが作成されます
と記載があるのみでバックアップサイクルと開始時刻ついての詳細には触れられていませんが、手元の環境で確認する限り、クラスターの初回作成時にスナップショットが作成され、以降おおよそ8時間毎に自動スナップショットが作成されるようです。また、具体的なしきい値までは確認できませんでしたが、データベースの使用量の増加もスナップショットのトリガーとなっているようです。
いずれにしろ自動スナップショットはその作成タイミングをユーザーサイドでコントロールできないので、特定の時間にスナップショットを作成したい、という要件がある場合は、定期的に手動スナップショットを作成するといった仕組みを導入する必要があります。
DBインスタンスを削除した場合/自動バックアップを無効にした場合は自動スナップショットも同時に削除される、という仕様はRDSと同様です。手動スナップショットのデフォルトの最大数は「20」です。
Amazon ElastiCache(Redis)
項目 | デフォルト値 | 設定可能な値 |
---|---|---|
バックアップサイクル | 1回/日 | 設定変更不可 |
バックアップ開始時刻 | リージョンごとに8時間の時間ブロックからランダムに選択される | 「開始時刻」と「期間(1〜3時間)」をUTCで指定 |
バックアップ保持期間 | 1日 | 0日〜35日 |
ElastiCache(Redis)はRDSと同様に1回/日のサイクルで、バックアップ開始時刻を指定することができます。指定できる期間は1時間〜3時間まで(0.5時間刻み)と、最小値がRDSとは若干異なっています。
ElastiCache(Redis)のスナップショットは内部的にはBGSAVEが実行されます。スナップショット作成中のRedisの性能劣化をさけるため、可能であればリードレプリカノードからスナップショットを作成するのがベストプラクティスとなっています。
DBインスタンスを削除した場合/自動バックアップを無効にした場合は自動スナップショットも同時に削除される、という仕様はRDSと同様です。手動スナップショットについては連続する24時間の間に、クラスターごとに20を超える手動スナップショットを作成することはできないという制限があるので注意しましょう。また、「cache.t1.micro」と「cache.t2.*」ノードについてはスナップショットの機能自体がサポートされていないため、こちらも注意が必要です。
- Redis クラスターのバックアップと復元 - Amazon ElastiCache
- Redis スナップショットを作成するための十分なメモリがあることの確認 - Amazon ElastiCache の実装のベストプラクティス
まとめ
マネージドサービスならではの便利機能である自動バックアップですが、サービス毎に微妙に仕様が異なっているので、これらの仕様を正しく理解した上でバックアップ/リカバリ設計を行いましょう。
また自動および手動スナップショットの保存領域(バックアップストレージ)はAWSの課金対象となっていますが、無料枠が存在します。バックアップ保持期間を決める際にはこの無料枠も1つの判断材料になるかと思います。
サービス | バックアップストレージの無料枠 | 備考 |
---|---|---|
RDB | DBインスタンスのストレージ容量と同容量 | 1TBのストレージであれば、スナップショットは合計で1TB分までは無料 |
Redshift | クラスターのストレージ容量と同容量 | 同上 |
ElastiCache(Redis) | クラスターごとに1つのスナップショットのストレージ領域 |